Increasingly, a complex large-scale software product or software development environment may require that programmers doing development or maintenance read unfamiliar code. In such situations, it may be challenging and time-consuming to trace the control flow from one function to another.